package main

/* v2在v1的基础上增加了抽象  */

// 定义构造接口，表示构造目标对象必须使用的方法，属于步骤约束
type BuilderInterface interface {
	WithBase()
	WithLimit()
	WithXY()
	ChcekErr()
}

// 定义构造对象，使用真实对象作为属性，真实对象满足接口约束
type V2Build struct {
	build BuilderInterface
	err   error
}

func (b V2Build) Construct() {
	// 不使用链式调用（链式调用需要返回原本的对象）
	b.build.WithBase()
	b.build.WithLimit()
	b.build.WithXY()
	b.build.ChcekErr()
}
